<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>

	<body>
		<h1>对象</h1>
		<p>
			对象原型prototype(指向另外一个对象,本对象的属性继承自它的原型对象)<br>
			内置对象(如数组Array，函数function，日期Date，正则RegExp)<br>
			宿主对象，javascript解释器所嵌入的宿主环境(如浏览器)定义的对象，也可以当成内置对象<br>
			javascript核心中的原始类型都包含内置构造函数<br>
			创建对象方法：<br>
			1.var x = {}<br>
			2.var x = new Object();<br>
			3.Object.create({x:3,y:4}); //create是个静态方法<br>
			  Object.create(null);创建一个没有原型的对象(不继承任何属性和方法)<br>
			  Object.create(Object.prototype);这个等价于1,2<br>
			使用.和[]获取属性值的区别,使用[]可以用变量而是用.只能写死在程序中<br>
			读取对象没有的属性会抛出异常<br>
			内置构造函数的原型是只读的  ; Object.prototype = 0;//赋值失败,会抛出一个类型错误异常<br>
			
			
			
		</p>
		<script type="text/javascript">
			function inherit(p){
				if(p == null) throw TypeError();
				if(Object.create) return Object.create(p);
				var t = typeof p;
				if(t!=="object" && t!=="function") throw TypeError();
				function f(){};
				f.prototype = p;
				return new f();
			}
		
			window.onload = function(){
				var o = {};
				o.x = 3;
				var p = inherit(o);
				console.log(p.x);
			};
			
		</script>
	</body>

</html>